<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        function DeepCopy ( arg ) {                 //创建一个函数，函数名为DeepCopy ， 具有一个形参arg
            if ( Array.isArray( arg ) ) {           //判断传过来的实参是否是数组类型
                var newArg = [] ;                   //如果是数组，就创建一个新数组
            } else {                                //否则
                var newArg = {} ;                   //创建一个新的对象
            }
            for ( var key in arg ) {                //给arg对象做遍历
                if ( typeof arg[key] !== 'object' ) { //如果arg对象里面的键值不是对象类型
                    newArg[key] = arg[key] ;        //直接将键名和键值传给新构造的对象newArg
                } else {                            //如果arg对象里面的键值存在对象类型
                    newArg[key] = DeepCopy( arg[key] );//将键值对象arg[key]继续调用DeepCopy，并将返回值赋值给新构造的对象键值中newArg[key]
                }
            }
            return newArg ;                         //最后返回值是构造的对象newArg
        }
    </script>
</body>
</html>